<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>4.立即执行函数与块作用域解决冲突</title>
  <script src="4.1.js"></script>
  <script src="4.2.js"></script>

<body>
  <script>
    // 第三方库的函数名可能和项目中的函数名重复，当然最好的解决方式是采用模块化的类
    // 我们也可以通过立即执行的方式解决这个问题。

    js2.hd(); // 引入两个js脚本，方法名相同，实际上会执行后加载的方法


    // 立即执行函数指函数定义时立即执行, 可以立即执行这个方法，不需要特意调用,可以用来定义私有作用域防止污染全局作用域
    "use strict";
    (function () {
      var web = 'houdunren';
    })();
    console.log(web); //web is not defined
    // 使用 let/const 有块作用域特性，所以使用以下方式也可以产生私有作用域
    {
      let a = 'houdunren';
      console.log(a);//可以访问 // houdunren
    }
    console.log(a);// 不可以访问
  </script>
</body>

</html>